<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style></style>
  </head>
  <body>
    <div>Promise并行执行---Promise.all</div>
    <script>
      function ajax(url) {
        return new Promise((resolve, reject) => {
          let xhr = new XMLHttpRequest();
          xhr.open("GET", url);
          xhr.responseText = "json";
          xhr.onload = function () {
            if (this.status === 200) {
              resolve(this.response);
            } else {
              reject(new Error(this.statusText));
            }
          };
          xhr.send();
        });
      }

      //同步执行多个请求的·方法，有一个出错就出错
      var promise = Promise.all([
        ajax("/asyn/user.json"),
        ajax("/asyn/user.json"),
      ]);

      //方法返回一个数组
      // promise.then(
      //   (res) => {
      //     console.log(res);
      //   },
      //   (err) => {
      //     console.log(err);
      //   }
      // );

      // promise.all(); 等待所有任务结束
      // promise.race(); 只会等待第一天个结束的任务

      const request = ajax("/asyn/user.json");
      const timeout = new Promise((resolve, reject) => {
        setTimeout(() => {
          reject(new Error("not"));
        }, 500);
      });
      // 如果request执行完成则返回,为完成则输出catch
      Promise.race([request, timeout])
        .then((res) => console.log(res))
        .catch((err) => console.log(err));
    </script>
  </body>
</html>
